home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / prog_c / rukc1g.zip / RUCKDAC.H < prev    next >
Text File  |  1994-02-27  |  10KB  |  270 lines

  1. /*      ruckdac.h
  2.  
  3.         Defines the RUCKUS library's structs, constants, and prototype
  4.  
  5.     v1.0d 27-Feb-94
  6.  
  7.     ***********************************************************************
  8.     * NOTE: RUCKUS is for medium, large, or huge models (do not use tiny, *
  9.     * ---- small, or compact since these allow for only 1 code segment).  *
  10.     ***********************************************************************
  11.  
  12.     ALL Borland C compilers must use the DACMEMBC.OBJ module patch for
  13.     RUCKDAC.LIB. See the BORLAND.ZIP file for more information.
  14.  
  15.     Struct types must be standard byte packed; do not special align elements
  16.     ** MS-specific #pragma pack(1) and pack() used in this header file **
  17. */
  18.  
  19. #pragma pack(1)
  20.  
  21. int far pascal RUCKDAC(void far *datapack);
  22.  
  23. #define SysInfoDac      0
  24. #define InitDac         1
  25. #define ExitDac         2
  26. #define AtExitDac       3
  27. #define LoadDac         4
  28. #define PlayDac         5
  29. #define RecordDac       6
  30. #define StoreDac        7
  31. #define EndDac          8
  32. #define PauseDac        9
  33. #define DeallocDac      10
  34.  
  35. #define SetAllDac       20
  36. #define SetVolumeDac    21
  37. #define SetIntRateDac   22
  38. #define SetPriorityDac  23
  39. #define GetBufferDataDac 28
  40. #define GetBytePosDac   29
  41.  
  42. #define SetAllSBP       30
  43. #define SetVolMainSBP   31
  44. #define SetVolVocSBP    32
  45. #define SetLevelMicSBP  33
  46. #define SetLevelCDSBP   34
  47. #define SetLevelLineSBP 35
  48. #define SetFilterOutSBP 36
  49. #define SetFilterInSBP  37
  50. #define SetSourceSBP    38
  51. #define SetStereoSBP    39
  52.  
  53. #define SetSpeakerSB    40
  54. #define GetMixerRegSBP  48
  55. #define GetDacSB        49
  56.  
  57. #define ExitMod         50
  58. #define AtExitMod       51
  59. #define LoadMod         52
  60. #define PlayMod         53
  61. #define EndMod          54
  62. #define PauseMod        55
  63. #define SetIntRateMod   56
  64. #define SetSpeedMod     57
  65. #define SetVolumeMod    58
  66. #define SetPositionMod  59
  67. #define SetStereoMod    60
  68. #define SetFastMod      61
  69.  
  70. /* current highest function is 61 */
  71.  
  72. struct DeallocPack {    /* DP */
  73.  unsigned Func;
  74.  int Stat;
  75.  unsigned HandSeg;      /* RUCKUS allocates either XMM handle or DOS para */
  76.  unsigned TypeFlag;     /* 0=DOS para, 1=XMS handle */
  77. }; /* 8 */
  78.  
  79. struct GetDataPack {    /* GDP */
  80.  unsigned Func;
  81.  int Stat;
  82.  unsigned long BytePos; /* current byte relative base ptr (27) */
  83.  char far *BufferPtr; /* far pointer to buffer to fill with data */
  84.  long StartPos;         /* start get at this offset relative BufferPtr */
  85.  unsigned BufferCnt;    /* bytes to fill (2-65520) */
  86.  unsigned MixerReg;     /* SBPro mixer register to get */
  87. }; /* 20 */
  88.  
  89. struct InitPack {       /* IP */
  90.  unsigned Func;
  91.  int Stat;
  92.  unsigned DeviceID;     /* 0=SPKR,1=LPTDAC,2=DSS,4=SB,5=SBPro */
  93.  unsigned IOport;
  94.  unsigned IRQline;
  95.  unsigned DMAch;
  96.  unsigned Flags;        /* see Appendix D. */
  97.  void far *InfoPtr;     /* ret:far ptr to dac info */
  98.  void far *DacExitPtr;  /* ret:far ptr to dac's ExitDac routine */
  99.  void far *ModExitPtr;  /* ret:far ptr to mod's ExitMod routine */
  100. }; /* 26 */
  101.  
  102. struct LoadPack {       /* LP */
  103.  unsigned Func;
  104.  int Stat;
  105.  void far *FilenamePtr;/* far ptr to filenameZ to load */
  106.  unsigned long StartPos; /* offset into file to start load at */
  107.  unsigned long LoadSize; /* number of bytes to load (or 0 for autosize) */
  108.  int XMMflag;            /* if <> 0 use XMS for load */
  109.  int XMMhandle;          /* ret:XMS handle, or */
  110.  void far *LoadPtr;    /* ret:DOS seg:offset (offset always 0) */
  111. }; /* 24 */
  112.  
  113. struct PlaybackPack {   /* PBP */
  114.  unsigned Func;
  115.  int Stat;
  116.  unsigned Mode;         /* mode (0=interrupt FG,1=BG,2=DMA,3=DMA+BG for mod) */
  117.  unsigned XMMhandle;    /* if <> 0 this XMM handle used regardless */
  118.  void far *LoadPtr;   /* seg:off to start of data to play */
  119.  unsigned BufferSize;   /* size of DMA buffer for mod playback */
  120. }; /* 14 */
  121.  
  122. struct PausePack {      /* PP */
  123.  unsigned Func;
  124.  int Stat;
  125.  unsigned Pause;        /* 0=unpause else pause */
  126. }; /* 6 */
  127.  
  128. struct RecordPack {     /* RP */
  129.  unsigned Func;
  130.  int Stat;
  131.  unsigned SampleRate;
  132.  int XMMhandle;         /* -1 auto XMS (ret here) else use this handle */
  133.  void far *RecordPtr; /* seg:off of buffer to store (0 for auto-store) */
  134.  unsigned long RecordBytes; /* bytes to record */
  135.  unsigned StereoFlag;   /* stereo flag */
  136. }; /* 18 */
  137.  
  138. struct SaveDataPack {   /* SDP */
  139.  unsigned Func;
  140.  int Stat;
  141.  void far *FilenamePtr; /* far ptr to filenameZ to save */
  142.  void far *DataPtr;   /* pointer to start of data to save */
  143.  unsigned FileType;     /* 1=VOC,2=WAV */
  144.  unsigned XMMhandle;    /* XMS handle of data to save (0 if DOS data) */
  145. }; /* 16 */
  146.  
  147. struct SetPack {        /* SP */
  148.  unsigned Func;
  149.  int Stat;              /* (if volume=0 SB speaker off'ed else on'ed) */
  150.  unsigned Volume;       /* volume (left ch=MSB,right=LSB) (0-127,0-127) */
  151.  unsigned IntRate;      /* playback interrupt rate (5000-23000) */
  152.  unsigned Priority;     /* priority level (0-2, default=1) */
  153. }; /* 10 */
  154.  
  155. struct SetModPack {     /* SMP */
  156.  unsigned Func;
  157.  int Stat;
  158.  unsigned VolCh1;       /* channel volume (0-255) */
  159.  unsigned VolCh2;       /* channel volumes adjustments made only */
  160.  unsigned VolCh3;       /*  if FastMode=0 */
  161.  unsigned VolCh4;
  162.  unsigned Stereo;       /* playback mode (0=mono,stereo 1,2,3) */
  163.  int FastMode;          /* fast playback (0=normal,1 fast,-1 skip) */
  164.  unsigned IntRate;      /* playback interrupt rate (5000-45500) */
  165.  unsigned Position;     /* pattern list position (0-patterns to play) */
  166.  unsigned Speed;        /* overall playback speed (1-15,default=6,15=slow) */
  167.  unsigned SliceAdj;     /* slice adjust (1-4096,default=1) set via FastMod */
  168. }; /* 24 */
  169.  
  170. struct SetProPack {     /* SPP */
  171.  unsigned Func;
  172.  int Stat;
  173.  unsigned Volume;       /* volume (low=right;0-15, high byte=left;0-15) */
  174.  unsigned VolVoc;
  175.  unsigned VolMic;       /* (mono only, 0-7) input level */
  176.  unsigned VolCD;        /* input level (0-15,0-15) */
  177.  unsigned VolLI;        /* input level (0-15,0-15) */
  178.  unsigned FilterOut;    /* 0=filter off, 1=filter on */
  179.  unsigned FilterIn;     /* 0=filter off, 1=3.2kHz, 2=8.8kHz */
  180.  unsigned SourceIn;     /* 0=mic,1=CD,2=line */
  181.  unsigned StereoIn;     /* 0=mono,1=stereo record */
  182. }; /* 22 */
  183.  
  184. struct XitPack {        /* XP */
  185.  unsigned Func;
  186.  int Stat;
  187. }; /* 4 */
  188.  
  189. struct SysDev {         /* SD (used by SysInfoPack below) */
  190.  int device;            /* =1 device available */
  191.  unsigned Port;
  192.  unsigned IRQ;
  193.  unsigned DMA;
  194.  unsigned Flags;        /* bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY */
  195. }; /* 10 */
  196.  
  197. struct SysInfoPack {    /* SIP */
  198.  unsigned Func;
  199.  int Stat;
  200.  unsigned CPU;          /* CPU class (88,286,386,486) */
  201.  unsigned CPUmode;      /* 0=real mode,1=PM,2=PM w/paging */
  202.  unsigned MHz;          /* approx speed (5,20,33) */
  203.  struct SysDev SD[6];
  204. }; /* 70 */
  205.  
  206.  
  207. /* dac and mod data area structure */
  208.  
  209. struct DacDataArea {
  210.  unsigned DeviceID;     /* 0   ;device ID */
  211.  unsigned IOport;       /* 2   ;port of device */
  212.  unsigned IRQ;          /* 4   ;IRQ of device */
  213.  unsigned DMA;          /* 6   ;DMA of device */
  214.  unsigned Flags;        /* 8   ;bit0=1 use DOS UMB memory */
  215.                         /*     ;bit1-3 reserved */
  216.                         /*     ;bit4=1 force SBPro device if SB15 (DSPtype=3) */
  217.                         /*     ;       (but DSPversion remains same) */
  218.                         /*     ;bit5=1 force XMS2 to be used */
  219.                         /*     ;bit6=1 force device speaker on until exit */
  220.                         /*     ;bit7=1 force passed parms to be used */
  221.                         /*     ;       Following values are ret bits */
  222.                         /*     ;bit8=1 paging mechanism in force, no UMBs */
  223.                         /*     ;bit9-15 reserved */
  224.  unsigned End;          /* 10  ;=1 end of play (dac play,does not include mod) */
  225.  unsigned Pause;        /* 12  ;=1 pause play */
  226.  unsigned EndOfMod;     /* 14  ;=1 end of mod play (when dac@end AND dac@endmod */
  227.                         /*     ;   both are 1 then play is done) */
  228.  unsigned MemDOS;       /* 16  ;DOS memory available (in K) */
  229.  unsigned MemXMM;       /* 18  ;XMS memory available (in K) */
  230.  unsigned Type;         /* 20  ;digital file type (1=VOC,2=WAV,3=MOD) */
  231.  unsigned MemUsed;      /* 22  ;memory used for last file load (in K) */
  232.  unsigned SampleRate;   /* 24  ;sample rate currently playing */
  233.  unsigned Stereo;       /* 26  ;stereo playback (data is stereo) */
  234.  unsigned long VocLen;  /* 28  ;length of voc block (only current block) */
  235.  void far *VocPtrPtr; /* 32  ;pointer to pointer->current data */
  236.  unsigned long RecordLen;/*36  ;length of recorded data */
  237. }; /* 40 */
  238.  
  239.  
  240. struct ModData {
  241.  
  242.  void near *chInfoPtr;/* -2  ;near ptr to channel info (not listed) */
  243.  
  244.  unsigned Type;         /*  0  ;mod type (15 or 31 samples) */
  245.  unsigned Samples;      /*  2  ;number of instrument samples in mod */
  246.  unsigned HeaderSeg;    /*  4  ;header segment (aka sample info) */
  247.  unsigned PatternSeg;   /*  6  ;patterns' segment (1 to pats2play 1K pats) */
  248.  unsigned SampleSeg[31];/*  8 (+62) ;list of sample segments */
  249.  
  250.  unsigned Stereo;       /* 70  ;=1 then play in stereo (only SBPro can set) */
  251.  unsigned FastMode;     /* 72  ;=1 then channel volume adjusts disabled */
  252.  
  253.  unsigned PatListPos;   /* 74  ;byte position within mod@patterList (0-127) */
  254.  unsigned NotePatPos;   /* 76  ;note position within pattern 1K area (0-1008) */
  255.                         /*     ;pattern#=patternList(patListPos) */
  256.                         /*     ;note is at offset (pattern#*1024)+notePatPos */
  257.                         /*     ;-- in segment mod@patternSeg */
  258.  unsigned HiPattern;    /* 78  ;highest pattern number to play/+1!/ (0-63) */
  259.  unsigned Pats2play;    /* 80  ;patterns to play (direct DOS file load here) */
  260.  char PatternList[128]; /* 82  (+128) ;pattern positions (to here) */
  261.  char MKoverflow[6];    /*210 (+6)   ;overflow for 31-instr patpos read */
  262.  
  263.  unsigned MemUsed;      /*216 ;DOS mem needed by mod file loaded (in para) */
  264.  unsigned long VS;      /*218 ;times VS handler entered (50Hz rate) */
  265. }; /* 222 */
  266.  
  267. #pragma pack()
  268.  
  269. /* end of ruckdac.h */
  270.